const express = require("express");

const router = express.Router();
// 导入文章的路由处理函数模块
const article_handler = require("../router_handler/articles");

// 导入验证数据中间件
const expressJoi = require("@escook/express-joi");
// 导入验证文章的校验模块
const {
  add_article_schema,
  get_article_schema,
  del_article_schema,
  edit_article_schema,
} = require("../schema/article");

// 因为上传文章 cover_img 是个图片文件    所以需要使用FormData 格式
// 导入解析 formdata 格式表单数据的包
const multer = require("multer");
// 导入处理路径的核心模块
const path = require("path");
// 创建 multer 的实例对象，通过 dest 属性指定文件的存放路径
const upload = multer({ dest: path.join(__dirname, "../uploads") });
// upload.single() 是一个局部生效的中间件，用来解析 FormData 格式的表单数据
// 将文件类型的数据，解析并挂载到 req.file 属性中
// 将文本类型的数据，解析并挂载到 req.body 属性中
// upload.single("cover_img"), 写在 expressJoi(add_article_schema)
router.post(
  "/add",
  upload.single("cover_img"),
  expressJoi(add_article_schema),
  article_handler.addArticle
);

// 获取文章列表数据的路由  get传 用query 和params
router.get("/list", expressJoi(get_article_schema), article_handler.getArticle);

// 根据id 删除文章
router.get(
  "/delete/:id",
  expressJoi(del_article_schema),
  article_handler.deleteArticle
);

// 根据id 获取文章详情
router.get(
  "/:id",
  expressJoi(del_article_schema),
  article_handler.getDetailArticle
);

// 根据id修改文章信息
router.post(
  "/edit",
  expressJoi(edit_article_schema),
  article_handler.editDetailArticle
);

module.exports = router;
